A distributed computer system is a system in which a number of independent, singular computer systems cooperate through one or more networks. Because a distributed computer system has independent but cooperating singular computer systems, management of the distributed computer system can be complex. In response to this complexity, certain techniques have become popular for management of distributed computer systems.
One such management technique is the use of policies. A policy is an entity, typically a rule, that causes the distributed computer system or a portion thereof to perform some action. A policy usually is in the form of a condition and an action (typically called a condition-action pair), where the policy specifies the action to be performed when the condition evaluates to a particular state (e.g., “true”). In policy-based systems, conditional parts of policies are evaluated (e.g., on demand or on a regular basis), and if the condition part of any policy evaluates to true, the associated action is performed by the system. Use of policies to control the actions of distributed computer systems has become an important technique in computer systems management.
One problem, however, in such policy-based distributed computer systems is that when the condition, action or a part of the condition or action requires a substantially long time to perform, a distributed computer system exhibits poor response. Moreover, the distributed computer system will exhibit a very large and sudden resource usage spike in response to events that trigger policy evaluation and execution. This problem can be so severe that, in large-scale distributed computer systems, the condition evaluation and corresponding action may not complete before the next triggering of the condition.
As an example, consider a policy-based file migration system that finds candidates for moving files from one type of disk to another, when certain criteria specified in a policy are met. If the file system contains billions of files, it can take many hours or days to scan through the entire file system to identify migration candidates.
Thus, there is a need for more efficient policy evaluation that provides scalability and responsiveness.